const axios = require('axios');
const BASE_URL = 'http://localhost:3000/api';

// 测试数据
const testAddressData = {
  order_id: '60',
  consignee_name: '测试用户',
  phone_number: '13800138000',
  province: '广东省',
  city: '深圳市',
  district: '南山区',
  detail_address: '科技园南区测试路123号',
  remarks: '请尽快送达',
  delivery_time: '工作日白天'
};

// 测试保存订单地址
async function testSaveOrderAddress() {
  try {
    console.log('\n=== 测试保存订单地址 ===');
    console.log('提交的数据:', testAddressData);
    
    const response = await axios.post(`${BASE_URL}/order_address`, testAddressData);
    
    console.log('保存成功! 响应数据:', response.data);
    return response.data.data?.id || null;
  } catch (error) {
    console.error('保存订单地址失败:', error.response?.data || error.message);
    return null;
  }
}

// 测试获取订单地址
async function testGetOrderAddress(orderId) {
  try {
    console.log('\n=== 测试获取订单地址 ===');
    console.log('查询订单ID:', orderId);
    
    const response = await axios.get(`${BASE_URL}/order_address`, {
      params: { order_id: orderId }
    });
    
    console.log('获取成功! 响应数据:', response.data);
    return response.data.data;
  } catch (error) {
    console.error('获取订单地址失败:', error.response?.data || error.message);
    return null;
  }
}

// 测试更新订单地址
async function testUpdateOrderAddress(orderId) {
  try {
    console.log('\n=== 测试更新订单地址 ===');
    const updateData = {
      order_id: orderId,
      consignee_name: '更新后的用户',
      phone_number: '13900139000',
      detail_address: '更新后的详细地址'
    };
    
    console.log('更新的数据:', updateData);
    
    const response = await axios.put(`${BASE_URL}/order_address`, updateData);
    
    console.log('更新成功! 响应数据:', response.data);
    return response.data.data;
  } catch (error) {
    console.error('更新订单地址失败:', error.response?.data || error.message);
    return null;
  }
}

// 测试删除订单地址
async function testDeleteOrderAddress(orderId) {
  try {
    console.log('\n=== 测试删除订单地址 ===');
    console.log('删除订单ID:', orderId);
    
    const response = await axios.delete(`${BASE_URL}/order_address`, {
      data: { order_id: orderId }
    });
    
    console.log('删除成功! 响应数据:', response.data);
    return true;
  } catch (error) {
    console.error('删除订单地址失败:', error.response?.data || error.message);
    return false;
  }
}

// 主测试函数
async function runTests() {
  console.log('开始测试订单地址接口...');
  
  // 测试保存
  const addressId = await testSaveOrderAddress();
  if (!addressId) {
    console.log('测试失败: 无法保存订单地址');
    return;
  }
  
  // 测试获取
  const orderId = testAddressData.order_id;
  await testGetOrderAddress(orderId);
  
  // 测试更新
  await testUpdateOrderAddress(orderId);
  
  // 测试再次获取（验证更新结果）
  await testGetOrderAddress(orderId);
  
  // 测试删除
  await testDeleteOrderAddress(orderId);
  
  // 测试删除后获取（验证删除结果）
  await testGetOrderAddress(orderId);
  
  console.log('\n测试完成!');
}

// 运行测试
runTests().catch(err => {
  console.error('测试过程中发生错误:', err);
});